package edu.continental.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import edu.continental.bean.Itinerario;
import edu.continental.util.Conexion;
import edu.continental.util.Utilitarios;

public class ItinerarioDAO {

	
	public List<Itinerario> buscarItinerarios(String fecha, String ciudadOrigen, String ciudadDestino) {
		
		System.out.println("buscarItinerarios");
		System.out.println("fecha: " + fecha);
		System.out.println("ciudadOrigen: " + ciudadOrigen);
		System.out.println("ciudadDestino: " + ciudadDestino);
		
		Conexion conexion=new Conexion();
		Connection con=conexion.getConnection();
		Statement st = null;
		ResultSet rs = null;
		List<Itinerario> listaItinerarios = new ArrayList<Itinerario>();
		
		String sql = "select it.id, it.horasalida, it.cantpasajeros, it.idbus, it.duracionhoras, c.nombre, d.nombre " +
					" from itinerario it " +
					" inner join ciudad c " +
					" on it.idciudadorigen = c.id " +
					" inner join ciudad d " +
					" on it.idciudaddestino = d.id " +
					" where it.fechasalida = '" + fecha + "' " +
					" and it.idciudadorigen = " + ciudadOrigen + " " +
					" and it.idciudaddestino = " + ciudadDestino + " " +
					" order by it.horasalida asc";
		
		System.out.println("sql: " + sql);
		try {
			st = con.createStatement();
			
			rs = st.executeQuery(sql);
			
			while ( rs.next() ) {
				//Capturamos los valores de la BD
				String horaSalida = rs.getString(1);
				int id = rs.getInt(1);
				String horasalida = Utilitarios.convertMinutesToHours( rs.getInt(2) );
				int cantPasajeros = rs.getInt(3);
				int idBus = rs.getInt(4);
				int duracionHoras = rs.getInt(5);
				String origen = rs.getString(6);
				String destino = rs.getString(7);
				
				//Instanciando el objeto
				Itinerario obj = new Itinerario();
				obj.setId(id);
				obj.setHoraSalida(horasalida);
				obj.setCantPasajeros(cantPasajeros);
				obj.setIdBus(idBus);
				obj.setDuracionHoras(duracionHoras);
				obj.setCiudadOrigen(origen);
				obj.setCiudadDestino(destino);
				
				//Agregamos a la lista
				listaItinerarios.add(obj);
				
			}
		
		} catch ( Exception ex ) {
			ex.printStackTrace();
			System.out.println("ERROR: " + ex.getMessage());
		}
		
		return listaItinerarios;
		
	}
	
}
